#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
PyInstaller打包脚本
"""

import os
import sys
import subprocess
import shutil

def build_exe():
    """构建exe文件"""
    print("开始构建exe文件...")
    
    # 检查PyInstaller是否安装
    try:
        import PyInstaller
    except ImportError:
        print("PyInstaller未安装，正在安装...")
        subprocess.run([sys.executable, "-m", "pip", "install", "pyinstaller"])
    
    # 清理之前的构建文件
    if os.path.exists("build"):
        shutil.rmtree("build")
    if os.path.exists("dist"):
        shutil.rmtree("dist")
    if os.path.exists("start.spec"):
        os.remove("start.spec")
    
    # PyInstaller命令
    cmd = [
        "pyinstaller",
        "--onefile",  # 打包成单个exe文件
        "--windowed",  # 无控制台窗口
        "--name=角色信息提取工具V1.0.0",
        "--icon=icon.ico",  # 图标文件（如果有的话）
        "--hidden-import=PyQt5",
        "--hidden-import=requests",
        "--hidden-import=PIL",
        "--hidden-import=pandas",
        "--hidden-import=openpyxl",
        "--hidden-import=numpy",
        "--hidden-import=mss",
        "--hidden-import=cv2",
        "main.py"  # 主入口文件
    ]
    
    # 如果没有图标文件，移除图标参数
    if not os.path.exists("icon.ico"):
        cmd.remove("--icon=icon.ico")
    
    print("执行打包命令...")
    print(" ".join(cmd))
    
    try:
        # 执行打包
        result = subprocess.run(cmd, check=True, capture_output=True, text=True)
        print("打包成功！")
        print("exe文件位置: dist/角色信息提取工具V1.0.0.exe")
        
        # 复制必要的文件到dist目录
        if os.path.exists("dist"):
            # 复制README文件
            if os.path.exists("README.md"):
                shutil.copy2("README.md", "dist/")
            
            print("\n构建完成！")
            print("可执行文件位置: dist/角色信息提取工具V1.0.0.exe")
            print("请将整个dist文件夹分发给用户")
            
    except subprocess.CalledProcessError as e:
        print(f"打包失败: {e}")
        print(f"错误输出: {e.stderr}")
        return False
    
    return True

def create_readme():
    """创建README文件"""
    readme_content = """# 角色信息提取工具V1.0.0

## 功能特点
- 支持截图和文件选择两种方式
- 智能识别区服名称（支持简称）
- AI自动提取角色信息
- 支持手动编辑结果
- 导出Excel表格
- 自动保存配置

## 使用方法
1. 双击"角色信息提取工具V1.0.0.exe"启动程序
2. 输入密码：naikuai666
3. 输入硅基流动API密钥
4. 选择截图或文件进行信息提取

## 联系作者
- 邮箱：AJower@163.com
- QQ：3175268324

## 注意事项
- 首次运行会自动安装依赖包
- 程序会自动保存配置，下次启动无需重新输入
- 支持区服简称输入，如"应许"会自动转换为"应许之地"
"""
    
    with open("README.md", "w", encoding="utf-8") as f:
        f.write(readme_content)
    print("README.md文件已创建")

def main():
    """主函数"""
    print("=" * 60)
    print("游戏截图信息提取工具 - 打包脚本")
    print("=" * 60)
    
    # 创建README文件
    create_readme()
    
    # 构建exe
    if build_exe():
        print("\n打包完成！")
        print("请检查dist目录中的文件")
    else:
        print("\n打包失败！")
        print("请检查错误信息并重试")

if __name__ == '__main__':
    main()
